#pragma once
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>

typedef int LTDataType;

typedef struct ListNode
{
	LTDataType data;
	struct ListNode* prev;
	struct ListNode* next;
}ListNode;

ListNode* LTInit();
ListNode* BuyLTNode(LTDataType x);
void LTPrint(ListNode* phead);
bool LTEmpty(ListNode* phead);

void LTPushBack(ListNode* phead, LTDataType x);
void LTPopBack(ListNode* phead);

void LTPushFront(ListNode* phead, LTDataType x);
void LTPopFront(ListNode* phead);

ListNode* LTFindNode(ListNode* phead, LTDataType x);

void LTInsertBefore(ListNode* pos, LTDataType x);
void LTErase(ListNode* pos);
void LTDestroy(ListNode** pos);